package punto3;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;



public class Punto3 {
BufferedReader leer;
int tam;
	public Punto3() throws IOException {
		int pos;
		String dato;
		
		leer=new BufferedReader(new InputStreamReader(System.in));
		Nodo tope=new Nodo();
		tope=null;
		tope=llenar(tope);
		imprimir(tope);
		do{
			System.out.print("\n ingrese pocision a insertar: ");
			pos=Integer.parseInt(leer.readLine());
			System.out.print("\n ingrese dato a insertar: ");
			dato=leer.readLine();
			if(pos!=0){
				tope=especifico(tope,pos,dato);
				imprimir(tope);	
			}

		}while(pos!=0);
		
	}

	private Nodo especifico(Nodo tope, int pos, String dato) {
		Nodo topaux =null;
		Nodo pila;		
		String dat;
		if(pos>tam)
			System.out.print("error posicion excede tamaño de la pila");
		else{
			for(int i=0;i<pos-1;i++){
				pila=new Nodo();
				if(topaux==null)
					topaux=pila;
					else
						pila.anterior=topaux;
						
				pila.inf=tope.inf;
				topaux=pila;
				tope=tope.anterior;
				
			}
			pila=new Nodo();
			if(tope==null)
				tope=pila;
			else
				pila.anterior=tope;
			
			pila.inf=dato;
			tope=pila;
			
			for(int i=0;i<pos-1;i++){
				pila=new Nodo();
				
				pila.anterior=tope;
						
				pila.inf=topaux.inf;
				tope=pila;
				topaux=topaux.anterior;
				
			}
			
		}
			
		
		
		
		return tope;
	}

	private Nodo llenar(Nodo tope) throws IOException {
		Nodo pila;
		String dato;
		
		System.out.println("pulse 's' para salir");
		do{
			System.out.println("dato :");
			dato=leer.readLine();
			if(!dato.equals("s")){
				pila=new Nodo();
			if(tope==null)
				tope=pila;
			else
				pila.anterior=tope;
			
			pila.inf=dato;
			tope=pila;			
			}	
		}while(!dato.equals("s"));
	
		return tope;
	}

	private void imprimir(Nodo tope) {
		tam=0;
		Nodo aux = new Nodo();
		aux=tope;
		System.out.print("\n");
		while(aux!=null){
			System.out.print("|"+aux.inf);
			aux=aux.anterior;
			tam++;
		}
		
		
	}

}
